package com.designpattern.AbstractFactoryPattern;

/**
 * @Author yp
 * @Date 2021-05-28
 * @Description 抽象工厂：农场类
 *              如果还有其他国家的工厂，可以在下面继续 implements Farm  这就达到了：开放封闭 原则
 **/

public interface Farm {

    Animal createAnimal();
    Plant createtPlant();
}



/**
 * 具体工厂：中国农场类
 */
class ZGfarm implements Farm {

    @Override
    public Animal createAnimal() {
        System.out.println("具体工厂：中国国农场-->新牛出生！");
        return new Cattle();
    }

    @Override
    public Plant createtPlant() {
        System.out.println("具体工厂：中国国农场-->蔬菜长成！");
        return new Vegetables();
    }
}

/**
 * 具体工厂：美国农场类
 */
class MGfarm implements Farm {

    @Override
    public Animal createAnimal() {
        System.out.println("具体工厂：美国农场-->新马出生！");
        return new Horse();
    }

    @Override
    public Plant createtPlant() {
        System.out.println("具体工厂：美国农场-->水果长成！");
        return new Fruitage();
    }
}

